\chapter{Módulo de Metadados}\label{capitulo3}

Devido à alta rotatividade de usuários do SacarWeb, apesar das melhorias implementadas durante as fases de remodelagem, ele continua sendo utilizado de maneira ineficiente pelos usuários.

Essa dificuldade encontrada nos exames disponibilizados no SacarWeb pode ser contornada através do fornecimento de informações sobre os exames, como protocolo de execução, fórmulas utilizadas, bibliografia base, entre outros, auxiliando assim tanto usuários que estão começando a utilizar um exame específico, quanto usuários avançados que necessitam sanar uma pequena dúvida. Outro foco que pode ser atingido é o de interessados na utilização do SacarWeb que desejam ter conhecimento dos padrões implementados pelos exames, acessando assim suas especificações.

Entretanto, não basta fornecer informações ao usuário. Visto que o SacarWeb é utilizado em um ambiente de pesquisa, é possível que exista interesse na utilização de suas informações sobre os pacientes ou recursos, como os exames, em outros projetos e softwares. Por isso, também é necessário que as informações sejam interoperáveis.
Uma possível solução para essa necessidade é a aplicação de uma camada semântica aos exames. Através dela seria possível realizar a descrição de cada um deles através de metadados, que devem obedecer a um padrão aceito internacionalmente. Essa estratégia abrange as duas necessidades do SacarWeb - fornecimento de informações aos usuários e interoperabilidade com outros sistemas - pois descreve a semântica dos recursos, sendo possível utilizar essas informações nos dois contextos.

\section{Desenvolvimento}

Foram geradas informações semânticas para alguns recursos disponíveis na aplicação, mais especificamente para os exames. Essas informações podem ser recuperadas posteriormente tanto na obtenção de um recurso por parte de outra aplicação ou pelo próprio usuário do SacarWeb. Essas duas abordagens são possíveis visto que a codificação dessas   informações segue um padrão internacional e é fornecida por especialistas da área, o que aumenta a sua confiabilidade.

\subsection{Requisitos do Módulo}
O processo de modelagem seguiu casos de sucesso encontrados na literatura. A primeira necessidade é a garantia da confiabilidade das informações, questão chave levantada pelos profissionais da saúde \cite{Hulse2004}. O público do SacarWeb, apesar de restrito, possui usuários com diferentes especializações, mais especificamente professores e pesquisadores especialistas nas áreas alvo do SacarWeb e alunos, que fazem parte dos projetos dos professores que utilizam o software, sendo que a maioria dos usuários são da UEL. Para uma maior confiabilidade das informações foi restringido apenas aos especialistas o fornecimento de informações sobre os exames.

Visto que os dados devem seguir uma padronização tanto de armazenamento quanto de codificação, serem facilmente disponibilizados para outras aplicações e agregar semântica aos recursos, a escolha mais correta é a adoção de RDF/XML. Essa escolha é chave na implementação, pois também poderiam ser utilizadas outras tecnologias, como bancos de dados, entretanto, seria necessário que outras aplicações conhecessem a estrutura de armazenamento para acessar as informações. Com o uso de \textit{Resource Description Framework} (RDF)/XML, basta uma requisição de um documento e sua interpretação semântica, como pode ser visto no Trabalho de Conclusão de Curso \cite{Ferracioli2008}.

Foi necessária a implementação de uma interface dentro do SacarWeb para uma utilização efetiva dessas funcionalidades pelos usuários diretos do sistema. Dessa maneira os dados fornecidos são validados e convertidos para o padrão necessário de maneira transparente para o usuário.

Durante a exibição das informações, quando solicitadas por um usuário, é aplicada uma transformação utilizando \textit{eXtensible Stylesheet Language Transformations} (XSLT) para uma exibição dos dados armazenados de maneira semelhante a interface do SacarWeb.

Um dos conceitos chave na implementação foi a necessidade da codificação dos dados de maneira compreensível por máquinas e humanos, que fosse flexível o bastante para que os especialistas da saúde fornecessem os dados sem auxílio dos projetistas de software. Utilizou-se uma estratégia semelhante a \cite{Hulse2004}, um ambiente de geração de conteúdo colaborativo, gerando informações de maneira incremental e aceitas pelos especialistas que participam do processo. Isso também permite uma base de informações mais fundamentada clinicamente \cite{Hulse2004}. Estratégia semelhante a essa também foi utilizada na definição de arquétipos em \cite{Linden2004}.

\subsection{Questões Semânticas}
Visando atender as necessidades atuais dos usuários e possíveis possibilidades de integração com outros aplicativos médicos com domínio de conhecimento semelhantes, utilizou-se de padrões abertos para codificação das informações. Além de ser uma boa prática nesse tipo de software \cite{McDonald2003}, ajuda na descoberta dos recursos presentes no SacarWeb \cite{Dogac2004}. Assim como \cite{Boulos2002}, o padrão de codificação selecionado para os dados contidos no RDF está especificado pelo \textit{Dublin Core Metadata Initiative} (DCMI)\footnote{http://dublincore.org/}, que permite uma maior padronização e agilidade na implementação devido à reutilização de soluções eficientes já conhecidas \cite{Linden2004}.

Devido a todos esses requisitos, o XML foi a escolha para a representação dos dados, principalmente por ser compreensível por humanos e máquinas \cite{Bray2006}. Além disso, a maioria das linguagens de programação possui as bibliotecas necessárias para manipulação desse tipo de recurso, não sendo necessário grande tempo desenvolvendo uma nova solução. Por fim, a escolha desse padrão para representação de dados favorece a interoperabilidade, visto que é possível codificar padrões e terminologias médicas aceitas mundialmente nele \cite{Moura2006}.

A descrição dos exames foi dividida em dois documentos, um deles representando o cabeçalho e o outro o corpo da descrição. O cabeçalho é codificado em RDF e contém informações genéricas sobre o documento que realmente descreve o exame (corpo). Os elementos utilizados nesse cabeçalho estão definidos pelo DCMI, facilitando a busca de recursos dentro do SacarWeb por parte de outras aplicações, devido a utilização do padrão. O \textit{Dublin Core}, organização que mantém os padrões, define um conjunto de meta dados destinados a ajudar na descoberta de recursos eletrônicos. A maioria dos elementos definidos possui semântica comumente compreendida com baixa complexidade \cite{Boulos2002}. Um dos motivos da escolha desse conjunto de meta dados se deve ao fato dele atender outras especificações internacionais nas definições de seus elementos. Entre as especificações atendidas, tem-se a \textit{International Organization for Standardization} (ISO) 3166, que define a representação de nomes de países, a \textit{Request for Comments} (RFC) 4646, que define a codificação para idiomas, e a especificação do W3C para formatos de datas \cite{DC2008}. A especificação de metadados \textit{Dublin Core} também é reconhecida como padrão ISO 15836,  \textit{American National Standards Institute} (ANSI)/\textit{National Information Standards Organization} (NISO) Z36.85 e RFC 5013.

Já o corpo é codificado em XML, seguindo as especificações contidas em um XML Schema definido pelos desenvolvedores do SacarWeb ao analisar as necessidades dos especialistas da área médica. O corpo contém as seguintes informações detalhadas sobre um exame:
\begin{itemize}
 \item título do exame;
 \item protocolo de execução do exame;
 \item variáveis que compõem o exame;
 \begin{itemize}
  \item tipo de variável;
  \begin{itemize}
   \item editável pelos usuários;
   \item calculada pelo sistema;
  \end{itemize}
  \item significado da variável;
  \item unidade de medida da variável;
  \item domínio da variável;
  \begin{itemize}
   \item valor mínimo;
   \item item valor máximo;
  \end{itemize}
  \item preenchimento da variável;
  \begin{itemize}
   \item instruções de preenchimento da variável;
   \item fórmula de cálculo.
  \end{itemize}
 \end{itemize}
\end{itemize}

Já o cabeçalho RDF possui as seguintes informações sobre um exame:
\begin{itemize}
 \item instituição que publica o recurso;
 \item data de criação dos metadados;
 \item bibliografia base do recurso;
 \item descrição geral do recurso;
 \item usuário que criou os metados;
 \item data de modificação dos metadados originais;
 \item arquivo de bibliografia.
\end{itemize}

O objetivo dessas informações é auxiliar profissionais, bem como outros sistemas a compreenderem o tipo de serviço oferecido pelo SacarWeb.

A divisão entre cabeçalho e corpo também auxilia na tarefa da descoberta dos recursos disponíveis no SacarWeb por outros sistemas \cite{Hulse2004}, visto que pode ser realizada uma busca apenas pelo cabeçalho que lê as informações e verifica sua relevância, só então decidindo buscar pelo restante dos dados presentes no corpo XML e, caso realmente seja relevante, pelo recurso. Veja um exemplo do arquivo RDF no apêndice \ref{rdf_head} e do arquivo XML no apêndice \ref{xml_body}.

\subsection{Conteúdo Colaborativo}
A colaboração dos usuários de qualquer sistema é uma das chaves para o sucesso do mesmo \cite{Hwang1999}. No caso de um sistema como o SacarWeb, utilizado para prover um banco de dados tanto para uso clínico como para pesquisas científicas da área médica, a validade e confiabilidade das informações ganha uma importância maior ainda \cite{Pang2003}. Um fato muito comum em diversos sistemas é o usuário mais experiente assumir o papel do usuário iniciante em algumas tarefas. Entretanto, visto que o sistema não é utilizado por todos os grupos de usuários, ele acaba não sendo validado em um ambiente real. No caso do SacarWeb, é necessário que essa prática não ocorra, visto que as informações dos exames a serem fornecidas são específicas do domínio da saúde, devendo atender desde usuários iniciantes até usuários avançados. Esse tipo de comportamento ocorre, em muitos sistemas, boa parte deles na web, devido a dificuldade na utilização da interface por parte dos usuários finais \cite{Ceaparu2003}, o que muitas vezes não é uma falha do usuário, mas da própria interface.

Visando uma maior colaboração dos usuários no fornecimento e confiabilidade de informações, foi desenvolvido na própria interface do SacarWeb, um formulário de autoria cujo acesso é permitido apenas para especialistas. Através deste formulário, os especialistas em saúde podem fornecer as informações de um determinado exame, sendo essas gravadas nos arquivos RDF e XML de maneira transparente. É possível verificar que essa prática é uma das melhores abordagens a se tomar nesse tipo de sistema \cite{Hulse2004}.

O fato de o formulário ser semelhante aos outros contidos no SacarWeb, ajuda o usuário a aprender mais rapidamente a utilização da funcionalidade, aumentando assim suas chances de sucesso. Visto que as informações só poderão ser fornecidas por especialistas da área médica, a fidelidade das informações também será maior. Para esta tarefa foi utilizada a linguagem em que o SacarWeb é codificado, o PHP, que oferece bibliotecas para manipulação de XML e XML Schema através da API DOM. No caso do RDF, foi utilizada uma implementação em PHP chamada RAP (RDF API for PHP), que oferece diversas funcionalidades para a manipulação de arquivos RDF e outras tecnologias de Web Semântica recomendadas pelo W3C.

Outro fato chave é a apresentação das informações ao usuário, sendo necessário manter uma aparência compatível com as demais interfaces do SacarWeb. Visto que os dados são codificados em tecnologias baseadas em XML, a maioria dos \textit{browsers} atuais consegue exibi-los naturalmente, entretanto, é necessário um conhecimento prévio da estrutura de um documento XML por parte do usuário. Retirando a necessidade desse tipo de conhecimento, ou representações em árvore comuns nos \textit{browsers}, torna a interpretação das informações mais simples e agradável. Tendo em vista essa necessidade, foi aplicada uma transformação XSLT aos documentos baseados em XML, exibindo seus dados formatados de maneira amigável e semelhante a interface padrão do SacarWeb, novamente de maneira transparente ao usuário. Para essa funcionalidade foram utilizadas as mesmas ferramentas da funcionalidade anterior, adicionando apenas a biblioteca de manipulação XSLT do PHP. Outra vantagem dessa abordagem, é que qualquer sistema poderá utilizar os mesmos arquivos, realizando utilizações específicas diferentes do SacarWeb ou até mesmo aplicando outras transformações com XSLT \cite{Schweiger2002}.

Até o momento o módulo permite as funcionalidades de autoria e visualização de informações específicas referentes aos exames. A autoria é permitida somente a usuários da categoria ``especialistas da área de saúde'' que possuem conhecimento para fornecer as informações necessárias. A aplicação já continha um conjunto de metadados incluídos durante testes. Na primeira versão liberada para testes, não havia a possibilidade de edição de arquivos, sendo possível somente a recuperação e inserção de dados. Visando uma maior colaboração entre os especialistas e o aproveitamento dos dados inseridos anteriormente foi adicionada a aplicação a capacidade de edição dos dados. Permite-se agora que o usuário modifique/atualize as informações que achar necessário, ou introduza informações para exames que ainda não continham metadados. A partir daí a colaboração e entre os usuários e o compartilhamento de conhecimento seria possível, atingindo mais um objetivo do módulo. A partir dele, tornou-se possível corrigir eventuais erros anteriores, agilizar o processo de agregar metadados aos exames melhorando assim a qualidade e confiabilidade das informações necessárias para a compreensão de cada exame.

A visualização destas informações pode ser feita por qualquer usuário da aplicação em todos os exames. O acesso se dá através de um \textit{link} ao lado na página em que o exame é realizado, que recupera os metadados do exame e os exibe de maneira amigável ao usuário. A figura \ref{fig:fluxo_metadados} mostra um diagrama com o fluxo geral de dados do módulo de metadados.
\begin{figure}[htb!]
    \centering
    \includegraphics[scale=0.6]{./figuras/metadados.png}
    \caption{Diagrama de Fluxo do Módulo de Metadados do SacarWeb}
    \label{fig:fluxo_metadados}
\end{figure}

Já a questão da interoperabilidade com outros sistemas, como os bancos de dados do Departamento de Informática do Sistema Único de Saúde (DATASUS), continua como uma necessidade do SacarWeb. Após análise da literatura, observou-se que para essa funcionalidade será necessária a adoção de uma camada de padronização baseada em terminologias médicas aceitas como padrões internacionais para definição dos metadados. Atualmente, os padrões utilizados implementam apenas codificação dos metadados, o que pode ser entendido como a utilização do RDF baseado nos padrões \textit{Dublin Core}.

\section{Conclusões do Módulo de Metadados}
A alta rotatividade de usuários e a possibilidade de novas instituições utilizarem o SacarWeb originou a necessidade de fornecer informações sobre os exames disponíveis na aplicação de maneira mais ágil. Para os usuários experientes, a qualquer momento que estiverem em contato com um deles, para novos usuários assim que entrarem em contato com a aplicação e selecionarem suas preferências.

Como solução foi criado um módulo de metadados que fornece informações relativas a cada exame, sendo que estas são originadas de usuários com especialidades médicas, para uma maior fidelidade nas descrições. Atualmente, é possível realizar tarefas que foram propostas durante a sua fase de levantamento de requisitos: autoria, edição e visualização de informações específicas referentes aos exames. Autoria e edição são permitidas somente a usuários da categoria “especialistas da área de saúde” que possuem conhecimento para fornecer as informações necessárias. A funcionalidade de edição é importante pois a aplicação já continha um conjunto de metadados incluídos durante a fase de testes. Com esta funcionalidade, tornou-se possível corrigir eventuais erros anteriores, agilizar o processo de agregação de metadados aos exames melhorando assim a qualidade e confiabilidade das informações necessárias para a compreensão de cada exame. A figura \ref{fig:metadados_edicao} mostra uma tela de edição/adição de metadados a um exame.
\begin{figure}[htb!]
    \centering
    \includegraphics[scale=0.3]{./figuras/metadados_edicao.png}
    \caption{Tela de edição/adição de metadados}
    \label{fig:metadados_edicao}
\end{figure}
A visualização destas informações pode ser feita por qualquer usuário da aplicação em todos os exames. Para isso basta acessar a um \textit{link} disponível na página do exame, que remete para as informações sobre ele. Ao realizar essa ação, todas as informações são recuperadas e exibidas.

Mais uma vez a colaboração dos usuários é fundamental para o sucesso, e sem ela a utilização da funcionalidade seria nula. Alcançamos sucesso na etapa de fornecimento de dados, facilitada pela interface do SacarWeb o que elimina a necessidade de conhecimentos de computação para os usuários especialistas da saúde. A visualização de dados é facilitada pois, a qualquer acesso, seja de um usuário Avaliador ou Administrador, a informação está disponível. Entretanto, essa funcionalidade ainda não teve uma utilização expressiva, devido a não ocorrência de rotatividade de usuários até o momento, mas acreditamos que ela será de grande ajuda quanto esse tipo de evento ocorrer. A figura \ref{fig:metadados_xslt} mostra um exemplo da tela de visualização de metadados.

\begin{figure}[htb!]
    \centering
    \includegraphics[scale=0.3]{./figuras/metadados_xslt.png}
    \caption{Tela de visualização dos metadados com transformação XSLT}
    \label{fig:metadados_xslt}
\end{figure}

Outro ponto a ser observado foi o aproveitamento das informações fornecidas pelos usuários para a agregação de semântica a aplicação. Essa é uma estratégia importante, como pode ser vista no Trabalho de Conclusão de Curso \cite{Ferracioli2008}. Entretanto, deve ser considerada a falta de padronização de vocabulário, necessária para que os metadados sejam úteis fora do domínio do SacarWeb. Apesar de uma parte dos dados seguir padrões internacionais, principalmente os codificados em RDF no padrão Dublin Core, outros dados importantes de escopo médico não possuem a mesma característica, o que é importante para o sucesso de máquinas de inferência, agentes inteligentes e agregação semântica de dados.